ClientDataSource
Otázka od: LUKES Václav
19. 9. 2002 15:14
Ahoj,
prosim vas o radu. Mam D6 a Win2000.
Mam toto spojeni:
SQLConnection
SQLDataSet
DataSetProvider
ClientDataSet
DataSource
Vse je pospojovano a vraci mi to data. Kdyz ale chci treba neco mazat a napisu
tohle:
ClientDataSource.Delete;
ClientDataSource.Post;
dostanu pri spusteni tuto hlasku:
...'ClientDataSource: dataset not in edit or insert mode.'
Kde nastavim onen EDIT ? V TQuery jsem nastavoval RequestLive, ale tady ???
Diky
V.
Odpovedá: Lstiburek Pavel
19. 9. 2002 16:56
K Delete neni Post.
Pavel
> Od: LUKES Václav [mailto:lukes@ans.cz]
> Ahoj,
>
> prosim vas o radu. Mam D6 a Win2000.
> Mam toto spojeni:
>
> SQLConnection
> SQLDataSet
> DataSetProvider
> ClientDataSet
> DataSource
>
> Vse je pospojovano a vraci mi to data. Kdyz ale chci treba
> neco mazat a napisu tohle:
>
> ClientDataSource.Delete;
> ClientDataSource.Post;
>
>
>
> dostanu pri spusteni tuto hlasku:
>
> ...'ClientDataSource: dataset not in edit or insert mode.'
>
>
> Kde nastavim onen EDIT ? V TQuery jsem nastavoval
> RequestLive, ale tady ???
>
> Diky
>
> V.
>
Odpovedá: Jiří Semler
19. 9. 2002 16:41
> Mam toto spojeni:
>
> SQLConnection
> SQLDataSet
> DataSetProvider
> ClientDataSet
> DataSource
>
> Vse je pospojovano a vraci mi to data. Kdyz ale chci treba neco mazat a
napisu tohle:
>
> ClientDataSource.Delete;
> ClientDataSource.Post;
>
> dostanu pri spusteni tuto hlasku:
>
> ...'ClientDataSource: dataset not in edit or insert mode.'
>
> Kde nastavim onen EDIT ? V TQuery jsem nastavoval RequestLive, ale tady ???
Zkus pouzit ClientDataSet.Edit;
Jirka
Odpovedá: Jan Sebelík
19. 9. 2002 18:23
> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
> > ClientDataSource.Delete;
> > ClientDataSource.Post;
> Zkus pouzit ClientDataSet.Edit;
Ne.
Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
Odpovedá: ing. Jan Fiala
19. 9. 2002 19:09
19.9.2002 Jan Sebelík:
>> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
>> > ClientDataSource.Delete;
>> > ClientDataSource.Post;
>> Zkus pouzit ClientDataSet.Edit;
> Ne.
> Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.
Problem bude spis v neaktualizovatelnem SQL dotazu.
Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
SQL dotaz: Delete From ....
--
ing. Jan Fiala
mailto:jan.fiala@iol.cz
Odpovedá: Jan Sebelík
20. 9. 2002 15:26
> >> > ClientDataSource.Delete;
> Odesílatel: ing. Jan Fiala <jan.fiala@iol.cz>
> Problem bude spis v neaktualizovatelnem SQL dotazu.
> Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
> SQL dotaz: Delete From ....
Jo, proc ne, souhlas, ale mluvime-li o TClientDataSet, tak zpravidla nemame
primy pristup do databaze, TClientDataSet nema "ExecSQL".
Navic "DataSet.delete" mi smaze prislusny zaznam z datasetu (tedy napr. z
gridu), kdezto "delete from" primo z databaze. (Pikantni by bylo, kdybych si
zaznam smazal v databazi a pak ho v TClientDataSet modifikoval.)
Neaktualizovatelny "select" (zpravidla z vice tabulek) je problem, ktery je
nutne resit (TUpdateObjecty, IBDataSet.ModifySQL, ...).
TClientDataSet ma jednu vyhodu. Protoze je vsechno v pameti, mohu si vetsinou
dovolit resit propojeni na "souvisejici" tabulky pres LookupField, takze se
vyhnu selectu z vice tabulek.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
----------
> Odesílatel: ing. Jan Fiala <jan.fiala@iol.cz>
> Komu: delphi-l@clexpert.cz
> Předmět: Re: ClientDataSource
> Datum: 19. září 2002 20:08
>
> 19.9.2002 Jan Sebelík:
> >> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
> >> > ClientDataSource.Delete;
> >> > ClientDataSource.Post;
>
> >> Zkus pouzit ClientDataSet.Edit;
> > Ne.
> > Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.
>
> Problem bude spis v neaktualizovatelnem SQL dotazu.
> Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
> SQL dotaz: Delete From ....
>
> --
> ing. Jan Fiala
> mailto:jan.fiala@iol.cz
Odpovedá: LUKES Václav
20. 9. 2002 12:42
-----Original Message-----
From: ing. Jan Fiala [mailto:jan.fiala@iol.cz]
Sent: Thursday, September 19, 2002 8:08 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource
19.9.2002 Jan Sebelík:
>> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
>> > ClientDataSource.Delete;
>> > ClientDataSource.Post;
>> Zkus pouzit ClientDataSet.Edit;
> Ne.
> Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.
Problem bude spis v neaktualizovatelnem SQL dotazu.
Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
SQL dotaz: Delete From ....
--
ing. Jan Fiala
mailto:jan.fiala@iol.cz
Odpovedá: LUKES Václav
20. 9. 2002 13:42
Diky za rady, ale nedari se...
Pokusl jsem se tedy pouzit SQLQuety. Spojil jsem komponenty
SQLConnection
SQLQuery
DataSource
Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu u
DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:
Operation not allowed on a unidirectional dataset.
Prosim vo co go ???
U BDE mi to krasne funguje, jak a co ale spojit u dbExpressu ???
V.
-----Original Message-----
From: ing. Jan Fiala [mailto:jan.fiala@iol.cz]
Sent: Thursday, September 19, 2002 8:08 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource
19.9.2002 Jan Sebelík:
>> Odesílatel: Jiří Semler <jsemler@stbk.mcs.cz>
>> > ClientDataSource.Delete;
>> > ClientDataSource.Post;
>> Zkus pouzit ClientDataSet.Edit;
> Ne.
> Delete je bez Post. Po Delete zustane ClientDataSet.Status=dsBrowse.
Problem bude spis v neaktualizovatelnem SQL dotazu.
Co kdybys misto takovych krkolomnych konstrukci pouzil k vymazu primo
SQL dotaz: Delete From ....
--
ing. Jan Fiala
mailto:jan.fiala@iol.cz
Odpovedá: Jan Sebelík
20. 9. 2002 15:44
> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu u
DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:
> Operation not allowed on a unidirectional dataset.
Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky nejsou
pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.
Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
Odpovedá: LUKES Václav
23. 9. 2002 11:04
Ahoj Honzo,
ja mam na formu tyto komponenty:
SQLConnection
SQLDataSet
DataSetProvider
ClientDataSet
DataSource
a mrizku - DBGrid.
Propojim to a v DBGridu mam data. OK. ted chci ale treba udelat Update na
datech, ne ale v mrizce, ale pomoci SQLka. A tady jsem out...
V.
-----Original Message-----
From: Jan Sebelík [mailto:honza@haes.cz]
Sent: Friday, September 20, 2002 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource
> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu u
DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:
> Operation not allowed on a unidirectional dataset.
Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky nejsou
pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.
Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
Odpovedá: LUKES Václav
23. 9. 2002 12:42
Co tedy pouzit pro "datarinu" ???
BDE jde do hrobu, dbExpress je k nepoužití... ADO ???
V.
-----Original Message-----
From: Jan Sebelík [mailto:honza@haes.cz]
Sent: Friday, September 20, 2002 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource
> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu u
DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:
> Operation not allowed on a unidirectional dataset.
Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky nejsou
pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.
Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
Odpovedá: delfi
23. 9. 2002 14:35
Hi, pouzivam to stejne jako ty. Napsal jsem si unit, ktery z TClientDataSetu
generuje sql dotazy na insert, update...
ales
----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, September 23, 2002 11:02 AM
Subject: RE: ClientDataSource
Ahoj Honzo,
ja mam na formu tyto komponenty:
SQLConnection
SQLDataSet
DataSetProvider
ClientDataSet
DataSource
a mrizku - DBGrid.
Propojim to a v DBGridu mam data. OK. ted chci ale treba udelat Update na
datech, ne ale v mrizce, ale pomoci SQLka. A tady jsem out...
V.
-----Original Message-----
From: Jan Sebelík [mailto:honza@haes.cz]
Sent: Friday, September 20, 2002 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource
> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu
u DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:
> Operation not allowed on a unidirectional dataset.
Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky
nejsou pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.
Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
Odpovedá: LUKES Václav
23. 9. 2002 15:41
Ja jsem z toho out. Bylo mi receno, ze pouzivat BDE je nesmysl. Dobra, je tu
dbExpress. Ale jak s nim jednoduse pracovat ? Potrebuju data insertovat, menit
a mazat...
Trapne jsem si myslel, ze pouziju SQLQuery. To mi jde, ale prijde mi to pekna
cunarna. Copak to nejde udelat podobne, jako v BDE, kde mi stacil Connect a Sql
???
V.
-----Original Message-----
From: delfi [mailto:delfi@pocitac.net]
Sent: Monday, September 23, 2002 12:56 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource
Hi, pouzivam to stejne jako ty. Napsal jsem si unit, ktery z TClientDataSetu
generuje sql dotazy na insert, update...
ales
----- Original Message -----
From: "LUKES Václav" <lukes@ans.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, September 23, 2002 11:02 AM
Subject: RE: ClientDataSource
Ahoj Honzo,
ja mam na formu tyto komponenty:
SQLConnection
SQLDataSet
DataSetProvider
ClientDataSet
DataSource
a mrizku - DBGrid.
Propojim to a v DBGridu mam data. OK. ted chci ale treba udelat Update na
datech, ne ale v mrizce, ale pomoci SQLka. A tady jsem out...
V.
-----Original Message-----
From: Jan Sebelík [mailto:honza@haes.cz]
Sent: Friday, September 20, 2002 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource
> Odesílatel: LUKES Václav <lukes@ans.cz>
> Potom jsem chtel data zobrazit v mrizce, v DBGridu, ale jakmile b DBGridu
u DataSource chci dat DataSource z SQLQuery, dostanu tuhle chybu:
> Operation not allowed on a unidirectional dataset.
Veskere komponenty dbExpress jsou pouze unidirectional, takze prakticky
nejsou pouzitelne.
Ani v dridu, ani pro update, ani pro vyhledavani, ani pro filter.
Pouze "while not eof do dejmidata".
Jsou proto pouzitelne pouze ve spojeni s TDataSetProvider a TClientDataSet.
Pak je v dbExpress jeste komponenta TSQLClientDataSet, ktera toto propojeni
interne realizuje.
Osobne bych ji moc nedoporucoval a radsi bych si to propojeni udelal sam.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
Odpovedá: Jan Grman
23. 9. 2002 16:00
> Ja jsem z toho out. Bylo mi receno, ze pouzivat BDE je nesmysl. Dobra, je
tu dbExpress. Ale jak s nim jednoduse pracovat ? Potrebuju data insertovat,
menit a mazat...
> Trapne jsem si myslel, ze pouziju SQLQuery. To mi jde, ale prijde mi to
pekna cunarna. Copak to nejde udelat podobne, jako v BDE, kde mi stacil
Connect a Sql ???
http://gethelp.devx.com/techtips/delphi_pro/10min/10min0701/10min0701-1.asp
http://gethelp.devx.com/techtips/delphi_pro/10min/10min0501/10min0501-1.asp
http://community.borland.com/article/0,1410,22495,00.html
Pekny den
jg
Odpovedá: LUKES Václav
24. 9. 2002 9:02
Diky,
dobra, pro praci s daty mi staci SQLConnection a SQLQuery.
Ale co musim pouzit pro zobrazeni dat treba v DBGridu ???
V.
-----Original Message-----
From: Jan Grman [mailto:J.Grman@kmer.elf.stuba.sk]
Sent: Monday, September 23, 2002 4:56 PM
To: delphi-l@clexpert.cz
Subject: Re: ClientDataSource
> Ja jsem z toho out. Bylo mi receno, ze pouzivat BDE je nesmysl. Dobra, je
tu dbExpress. Ale jak s nim jednoduse pracovat ? Potrebuju data insertovat,
menit a mazat...
> Trapne jsem si myslel, ze pouziju SQLQuery. To mi jde, ale prijde mi to
pekna cunarna. Copak to nejde udelat podobne, jako v BDE, kde mi stacil
Connect a Sql ???
http://gethelp.devx.com/techtips/delphi_pro/10min/10min0701/10min0701-1.asp
http://gethelp.devx.com/techtips/delphi_pro/10min/10min0501/10min0501-1.asp
http://community.borland.com/article/0,1410,22495,00.html
Pekny den
jg
Odpovedá: Jan Sebelík
24. 9. 2002 16:16
> Odesílatel: LUKES Václav <lukes@ans.cz>
> dobra, pro praci s daty mi staci SQLConnection a SQLQuery.
> Ale co musim pouzit pro zobrazeni dat treba v DBGridu ???
A jsme tam, kde jsme uz byli: jedine ClientDataSet.
Anebo, jak by asi poradil Zbysek , data umistit do vlastnich objektu a na
DBControls zapomenout.
Pak mam vsechno uplne pod vlastni kontrolou. Je to ale pracnejsi.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================
Odpovedá: Milan Tomeš
25. 9. 2002 7:11
Coz je IMHO (s vyhledem do budoucna) daleko lepsi. Nejhorsi je udelat si
nejaky framework, ktery toto vsechno umi. Ja jsem si zakladni FW napsal
(vcetne jedne komponenty - editacniho pole) a ma to nekolik tisic radku
zdrojaku... Jeste mi chybi spousta komponent (combo box, grid atp...), ale
pouzitelne to je a nemam s tim nejake vyraznejsi problemy.
S pozdravem
Milan Tomes
mailto:milan.tomes@haida.cz
> Anebo, jak by asi poradil Zbysek , data umistit do vlastnich
> objektu a na DBControls zapomenout.
> Pak mam vsechno uplne pod vlastni kontrolou. Je to ale pracnejsi.
>
> Honza
Odpovedá: Martin Schayna
25. 9. 2002 9:28
----- Original Message -----
From: "Milan Tomeš" <milan.tomes@haida.cz>
> Coz je IMHO (s vyhledem do budoucna) daleko lepsi. Nejhorsi je udelat si
> nejaky framework, ktery toto vsechno umi. Ja jsem si zakladni FW napsal
> (vcetne jedne komponenty - editacniho pole) a ma to nekolik tisic radku
> zdrojaku... Jeste mi chybi spousta komponent (combo box, grid atp...), ale
> pouzitelne to je a nemam s tim nejake vyraznejsi problemy.
A nebo implementovat TDataSet potomka, ktery s temi datovymi objekty
(business objekty) umi pracovat jakoby to byly zaznamy v tabulkach.
Pak lze vyuzit vsechen komfort data controls a take programovani GUI je
jednodussi -- programatori pracuji s tim co znaji TDataSource, TDBcokoliv
atd. Mame tak udelany framework a funguje to OK.
Martin Schayna